Repository navigation
feat(profiling): Introduce continuous profiling mode - #2830
Merged
sentrivana merged 47 commits intoJun 11, 2024
Merged
Conversation
This is a new profiling mode that is mutually exclusive from the existing profiling modes. In the current profiling modes, a profile is always directly attached to a transaction. This new mode will continuously emit chunks of profiling data that will be connected to the span data.
Zylphrex
added a commit
that referenced
this pull request
Mar 18, 2024
As per getsentry/rfc#75, this adds the thread data to the spans. This will be needed for the continuous profiling mode in #2830.
Zylphrex
added a commit
that referenced
this pull request
Mar 20, 2024
As per getsentry/rfc#75, this adds the thread data to the spans. This will be needed for the continuous profiling mode in #2830.
…o/feat/introduce-continuous-profiling-mode
Zylphrex
marked this pull request as ready for review
May 7, 2024 13:44
…o/feat/introduce-continuous-profiling-mode
This reverts commit ed66f59.
Zylphrex
commented
Jun 6, 2024
sentrivana
approved these changes
Jun 10, 2024
Zylphrex
added a commit
that referenced
this pull request
Jun 11, 2024
The thread data was added to the profile context in #2830. It should live in the trace context to align with other SDKs.
sentrivana
pushed a commit
that referenced
this pull request
Jun 12, 2024
The thread data was added to the profile context in #2830. It should live in the trace context to align with other SDKs.
arjennienhuis
pushed a commit
to arjennienhuis/sentry-python
that referenced
this pull request
Sep 30, 2024
This is a new profiling mode that is mutually exclusive from the existing profiling modes. In the current profiling modes, a profile is always directly attached to a transaction. This new mode will continuously emit chunks of profiling data that will be connected to the span data.
arjennienhuis
pushed a commit
to arjennienhuis/sentry-python
that referenced
this pull request
Sep 30, 2024
The thread data was added to the profile context in getsentry#2830. It should live in the trace context to align with other SDKs.
sentrivana
pushed a commit
that referenced
this pull request
Nov 9, 2026
### Description Removes `ContinuousScheduler.pause()` from `sentry_sdk/profiler/continuous_profiler.py` (3 lines). It's a stub that only raises `NotImplementedError`, and nothing implements it or calls it. #2830 (Jun 2024, "Introduce continuous profiling mode") added it next to `ensure_running()` and `teardown()`. Unlike those two, no subclass ever overrode it, and the SDK never called it. The stub makes it look like the continuous profiler can be paused, but it can't. **Evidence** - `git grep -nw pause` on `master` finds only the definition. Nothing in `sentry_sdk/`, `tests/`, `scripts/` or `docs/` refers to it. - `ThreadContinuousScheduler` and `GeventContinuousScheduler`, the only subclasses, override `ensure_running()` and `teardown()` but not `pause()`. - `git log -S "def pause"` finds only #2830. `git log -S ".pause("` across `sentry_sdk` and `tests` finds no commits, so it has never had a caller. - `ContinuousScheduler` isn't exported from `sentry_sdk.profiler` (`__all__` lists only the transaction-profiler schedulers) and isn't documented. - No open PR or issue mentions it. #7275 also touches `continuous_profiler.py`, but in different hunks (`ThreadContinuousScheduler.__init__`). **Why it's safe** - `ContinuousScheduler` is an internal class. The method is unreachable, so behavior doesn't change, and no public API or documented behavior is affected. **Checks** - `uv run ruff check` / `ruff format --check` on `sentry_sdk/profiler`: clean - `uv run --group typing mypy sentry_sdk`: no issues - `TESTPATH=tests/profiler uv run tox -e py3.14-common`: 106 passed, 69 skipped. The skipped tests are the gevent cases, which need gevent installed. #### Issues None. Found by the weekly sentry-python removal scout. <!-- junior-request-attribution:start --> via [automation `sched_65eed06cc199036c2b13411096f412d4`](https://junior-prod.sentry.dev/automations/sched_65eed06cc199036c2b13411096f412d4) · Run ID `sched_65eed06cc199036c2b13411096f412d4:1794211200000`. <!-- junior-request-attribution:end --> <!-- junior-session-footer:start --> <!-- junior-conversation-id:agent-dispatch%3Adispatch_0096be51ec4ca0f294d1b5786520632b --> -- [View Session](https://junior-prod.sentry.dev/conversations/agent-dispatch%3Adispatch_0096be51ec4ca0f294d1b5786520632b) [[Sentry]](https://sentry.sentry.io/explore/conversations/agent-dispatch%3Adispatch_0096be51ec4ca0f294d1b5786520632b/?project=4510944073809921) <!-- junior-session-footer:end --> Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a new profiling mode that is mutually exclusive from the existing profiling modes. In the current profiling modes, a profile is always directly attached to a transaction. This new mode will continuously emit chunks of profiling data that will be connected to the span data.